#include "vpi_user.h"
#include "pli_interface.h"

/* contains prototypes of the PLI registration routines*/
/* also contains the vlog_startup_routines function */

/* register routines for all the pli functions */

void register_pli_init()
{
	s_vpi_systf_data tf_data;

	tf_data.type = vpiSysTask;
	tf_data.sysfunctype = 0;
	tf_data.tfname = "$pli_init";
	tf_data.calltf = pli_init;
	tf_data.compiletf = NULL;
	tf_data.sizetf = NULL;
	tf_data.user_data = NULL;
	vpi_register_systf(&tf_data);
	return;
}

void register_pli_update()
{
	s_vpi_systf_data tf_data;

	tf_data.type = vpiSysTask;
	tf_data.sysfunctype = 0;
	tf_data.tfname = "$pli_update";
	tf_data.calltf = pli_update;
	tf_data.compiletf = NULL;
	tf_data.sizetf = NULL;
	tf_data.user_data = NULL;
	vpi_register_systf(&tf_data);
	return;
}

void register_pli_capture()
{
	s_vpi_systf_data tf_data;

	tf_data.type = vpiSysTask;
	tf_data.sysfunctype = 0;
	tf_data.tfname = "$pli_capture";
	tf_data.calltf = pli_capture;
	tf_data.compiletf = NULL;
	tf_data.sizetf = NULL;
	tf_data.user_data = NULL;
	vpi_register_systf(&tf_data);
	return;
}

void register_pli_drive()
{
	s_vpi_systf_data tf_data;

	tf_data.type = vpiSysTask;
	tf_data.sysfunctype = 0;
	tf_data.tfname = "$pli_drive";
	tf_data.calltf = pli_drive;
	tf_data.compiletf = NULL;
	tf_data.sizetf = NULL;
	tf_data.user_data = NULL;
	vpi_register_systf(&tf_data);
	return;
}

/* lookup table */

void (*vlog_startup_routines[]) () = {
register_pli_init,
	    register_pli_update, register_pli_capture, register_pli_drive, 0};
